# -*- coding: utf-8 -*-
"""
实验：递归求斐波那契数列的指定项
目标：掌握递归函数的基本写法与边界条件

说明：
- 序列：0, 1, 1, 2, 3, 5, ...
- 本实验输入为“第 n 项”（从 1 开始计数）；
  计算时可转为 0 开始的索引：fib(n-1)，其中 fib(0)=0, fib(1)=1。
"""

def fib(k: int) -> int:
    """返回以 0 为起点索引的第 k 个斐波那契数（k>=0），递归实现。"""
    # ===== 基本情形（挖空）=====
    # 当 k 为 0 或 1 时，直接返回 k 本身
    # TODO：补全基本情形
    if(k == 0):
        return 0
    elif(k == 1):
        return 1
    else:
    # ===== 递归情形（挖空）=====
        return fib(k-1)+fib(k-2)
    # TODO：补全递归式


def main():
    print("递归斐波那契：输入第 n 项（从 1 开始计数），输出该项的值。示例：输入 4 输出 2。")
    # ===== 输入与校验（部分已写）=====
    n_str = input("请输入 n（正整数，从 1 开始）：")
    try:
        n = int(n_str)
    except ValueError:
        print("输入无效：请输⼊正整数。")
        return

    # TODO：检查 n 是否为正整数（n >= 1），否则打印 "输入无效：n 必须 >= 1。" 并返回

    # ===== 计算与输出（挖空）=====
    # 将“第 n 项（从 1 开始）”转换为 0 起始索引：k = n - 1
    # TODO：调用 fib(k) 并打印结果
    if(n>=1):
        print(f"第 {n} 项的值为：{fib(n-1)}")
    else:
        print("输入无效：n 必须 >= 1。")


if __name__ == "__main__":
    main()
